迭代是个协议来的
简单迭代器
function makeIterator(arr) {
    // 要对nextIndex自加
    let nextIndex = 0;
    // 返回迭代器对象
    return {
        // next() 方法返回结果对象
        next:()=>{
            if(nextIndex<arr.length) {
                return {
                    value:arr[nextIndex++],
                    // 没有迭代结束
                    done:false
                }
            }else {
                return {
                    done:true
                } 
            }
        }
    }
}

const it = makeIterator(['吃饭','睡觉','放屁']);
console.log('1',it.next().value);
console.log('2',it.next().value);
console.log('3',it.next().value);
console.log('4',it.next().done);

// 生成器,其他就是迭代器的简写
/**
 * @params 生成器需要带上*
 */
function *makeIterator(arr) {
    for(let i = 0;i<arr.length;i++) {
        // 类似断点执行
        yield arr[i]
    }
}
const gen = makeIterator(['吃饭','睡觉','放屁']);
console.log('1',gen.next().value);
console.log('2',gen.next().value);
console.log('3',gen.next().value);
console.log('4',gen.next().done);